查看原文
其他

营销自动化系统设计与实现

马文斌 58技术 2022-03-15

导读

 随着业务发展,产品和运营对营销的诉求越来越强烈。简单的营销工具(发券、领券、发消息等工具)在支持复杂的营销场景时,效率比较低。营销自动化系统就是为了解决这种多步骤的复杂营销场景:让产品运营的营销思路通过可视化的“画布”进行定制化实现;在整个营销活动执行中,可进行执行结果监控,提供通用的漏斗分析和间隔分析。

本文从需求分析到方案设计去讲解我们的营销自动化系统整体设计。后面会出系列文章去针对营销自动化系统的技术细节进行介绍,欢迎大家关注。


需求分析

1.营销的本质

是“商家”为了提升收入,通过一定的营销规则,跟用户进行交互。
                

2.营销通用的模式

  • 商家先定制营销规则,并通过一定渠道通知用户;
  • 用户参与(分享、参与抽奖、使用优惠券下单);
  • 用户满足营销规则,进行一定的奖励(发优惠券、发实物、打折)等。

3.运营人员如何做营销?



当营销过程中遇到“用户参与少”,“用户长期不用券”等问题时,运营人群通常会再次经过离线数据进行目标用户筛选,再次重复上述流程。

4.理想化的方式

运营人员提前将制定好的营销方案通过“画布”或其他方式制定出来,交给系统自动化执行。


方案设计

1. 系统应该支持什么能力?

通过上述的需求分析,我们需要设计一个能“自动化执行复杂营销方案”的系统。营销自动化系统需要具备如下能力:
  • 支持用户定制化营销方案的能力;
  • 自动执行复杂多步骤、多分叉的能力;
  • 支持系统主动触发用户的能力;
  • 监控用户行为的能力;
  • 用户参与活动的频次等风控能力;

2. 架构如何设计

人类自从进入计算机时代,计算机就可以帮助人类实现各种复杂的计算:普通的用户通过各种可视化应用向计算机输入自己的idea;专业开发者通过coding的方式将自己的idea通过代码的方式输入到计算机。不管多复杂的idea,计算机总能准确的帮你完成。
营销自动化系统则也是要将“营销的idea”输入给营销自动化系统,营销自动化系统负责“自动化执行营销idea”。
类比我们熟悉的“JVM开发系统”,营销自动化系统的基本架构如下:


整体的架构分为四层:
  • 营销自动化应用:类似IDEA、eclipse等开发软件,用户可通过应用层将自己的营销idea描绘出来。
  • 营销自动化API:类似Java、scala语言,定义了一套营销自动化系统接入的规范。
  • 营销自动化翻译器:强绑定上层的API,定制化API翻译器,类似Javac、Scalac,将API创建的结果翻译成营销自动化引擎可识别的数据格式(类似字节码);
  • 营销自动化引擎:类似JVM,按照一定的数据格式(类似字节码)和模型进行执行。

3. 营销自动化引擎从模型到功能

营销自动化系统是基于有限状态机(FSM)模型+触发条件驱动营销行为(marketing action)的运行机制实现的:
                                
图(Graph)代表一次活动(campaign),规定了营销的目标人群(audience)、运行周期(startTime、endTime)、用户可重复参与规则(参与次数(frequency)、参与间隔时间(interval))、预设的用户营销路径。
用户每次参与活动只能选择一条营销路径:当遇到分叉时,根据用户行为选择一条路径执行。
用户的营销路径可以支持”并行“或”串行“:
  • 并行:是指用户在活动周期内可同时存在n条生效的营销路径,n=frequency(参数次数);

  • 串行:是指用户在活动周期内有且只有一条生效的营销路径,只有上一条营销路径结束后才可生效下一条营销路径,可重复参与n次,n=frequency(参数次数);

边(side)代表触发条件(trigger):
  • 可支持用户行为组合为一个触发条件(trigger):比如:事件1且事件2、事件1或事件2、(事件1或事件2)且(事件3或事件4)

  • 可源于系统监控行为(system monitor):系统定时、某个行为后延迟多长时间、空间定位

  • 用户行为(我们称之为事件(event)):用户在某个时间内消费满足100元、用户在某个时间搜索了某个关键字、用户在某个时间点击了目标按钮或链接等;

点(point)代表对用户的营销行为(marketing action):

满足触发条件(trigger)后,即可对用户产生一组营销行为(marketing action)

营销行为(marketing action)包括:消息push、发放优惠券、发放奖品、商品打折、资源点赠送等;支持一组营销动作的执行,多个营销动作的执行顺序可支持三种:

  • 并行(parallel): 多个营销动作可同时执行,互不干扰;

  • 串行(serial): 多个营销动作之间顺序依赖,必须前置营销动作执行成功方可执行;

  • 优先级(priority):多个营销动作优先选择执行,优先之前前置动作,前置动作执行成功,则不再执行后续动作;如果前置动作执行失败,可选择执行后续动作;


4. 营销自动化引擎整体设计


自动化翻译器:负责将营销自动化API创建的活动数据翻译成营销自动化引擎的
营销自动化引擎:基于(FSM)模型+触发条件驱动营销行为的思路实现,整体分为4个模块:
  • 状态控制:是整个营销自动化引擎的核心,基于FSM模型实现了对用户参与活动状态的控制。

  • 时间控制:基于redis实现了分钟级的定时控制,基于crontab实现任意时间的定时控制以及支持基于上一步操作的延时控制能力。

  • 事件规则控制:该模块是负责对用户的营销行为(即事件)进行监控,对用户的营销行为(事件)进行规则校验,只有满足校验规则的事件才能进行状态控制模块去驱动相应的营销动作(Marketing action):

 1.基于2维数组的方式,支持单个事件中,多个参数条件的“与”、“或”逻辑:
(productId == 1 || productId == 1) && (cityId == 2)&& (price >= 20) -> [[productid eq 1,productId eq 1],[cityId eq 2],[price lte 20]];
 2.基于redis+2维数组模型,支持多个事件之间的“与”、“或”逻辑:
(累计消耗20元 或 下单满5单) 并且 (发帖数达到10条)-> [[累计消耗20, 下单满5单],[发帖数达到10条]]
  • 动作执行控制:该模块负责执行系统对用户的营销动作(例如:发短信、发优惠券等)。当状态控制进行每一次状态变更后,都会通知该模块去执行营销动作(Marketing action)。

  • 监控中心:该模块负责对营销自动化引擎的每个环节进行监控报警。
  • 异常处理:该模块使用了自研的自助重试系统实现。对于系统中每个环节可能存在的异常都进行了定制化重试策略,可系统自动化恢复大多数的异常数据。当存在待定的异常数据时会发出报警,可通过自主化重试平台进行人工干预处理。
  • 数据仓库:从用户参与活动,到活动结束,我们需要知道用户做了哪些行为(event)、系统对用户做了哪些营销动作(action)、event->action的变化过程是什么样的,因此数据仓库中包括:触发条件数据(trigger data)、营销动作数据(action data)、用户营销状态变化数据(user campaign state flow data)。依赖这些数据,可进行通用的漏斗分析和间隔分析,也可根据特定的活动场景,与其他业务数据做关联进行定制化的效果数据产出。


总结&展望

营销自动化系统旨在解决如何将复杂的营销方案用自动化的系统去实现,提升运营的效率。并依托底层的数据仓库,方便的对营销的过程数据进行营销后的效果分析。本文主要讲了整体的营销自动化系统整体设计思路。
为了丰富营销场景,营销自动化系统会对接许多的系统作为系统的输入和输出:例如监听订单消息、发帖消息、对接发券系统、发apppush等系统。对于输入流量,需要避免单个业务流量过高而对整体系统造成压力;对于输出流量,我们也要考虑到目标系统最大能支持多大的QPS;当出现系统超时等异常,如何能做到快速发现和恢复;如何通过Redis实现负责的事件规则校验和时间控制等,这些技术细节我们会出系列文章进行介绍,欢迎大家关注

作者简介:
马文斌:58同城商业生态与智能发展中心会员技术部,后端开发工程师。参与过业务系统的重构、营销平台的搭建,负责设计开发了分布式调度平台和分布式重试调度系统等横向技术项目。

推荐阅读:
Taro2.x 跨端开发实践
从Mach-O角度谈谈Swift和OC的存储差异
文本预训练模型在信息安全场景的探索和实践
人物 | 罗景:多业务融合推荐场景下的深度学习实践
58同城无侵入改造业务库为Dynamic Feature工程的探索和实践

福利环节

 为了鼓励优质内容传播,【58技术】公众号近期会持续推出不定期活动奖励。

  1. 评论区互动留言,即可参与此次活动

  2. 留言转发集赞,点赞量前三名(点赞数需大于10)可获得定制版新年代码台历一本

  3. 活动时间:截至2021年1月21日



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存